Skip to content

AddFeasibility transform#4547

Closed
sunnyshen321 wants to merge 2 commits into
facebook:mainfrom
sunnyshen321:export-D85185246
Closed

AddFeasibility transform#4547
sunnyshen321 wants to merge 2 commits into
facebook:mainfrom
sunnyshen321:export-D85185246

Conversation

@sunnyshen321
Copy link
Copy Markdown

Summary:
Transform that adds failure-awareness capability to Ax optimization.

This transform enables Ax to learn from deterministic trial failures (ABANDONED trials) and avoid sampling similar parameter configurations that are likely to fail. It achieves this by:

  1. Adding a "is_feasible" metric to experiment data based on trial status
    - ABANDONED trials get feasibility value of 0.0 (infeasible)
    - Other trials get feasibility value of 1.0 (feasible)

  2. Adding a feasibility constraint to the optimization config
    - The constraint enforces P(is_feasible) >= threshold
    - This guides the acquisition function to avoid infeasible regions

NOTE: We should maybe pick a different word than "feasibility" to not be confused with feasibility in the sense of not violating user-specified outcome constraints.

Differential Revision: D85185246

@meta-codesync
Copy link
Copy Markdown

meta-codesync Bot commented Nov 18, 2025

@sunnyshen321 has exported this pull request. If you are a Meta employee, you can view the originating Diff in D85185246.

@meta-cla meta-cla Bot added the CLA Signed Do not delete this pull request or issue due to inactivity. label Nov 18, 2025
sunnyshen321 pushed a commit to sunnyshen321/Ax that referenced this pull request Nov 18, 2025
Summary:

Transform that adds failure-awareness capability to Ax optimization.

This transform enables Ax to learn from deterministic trial failures (ABANDONED trials) and avoid sampling similar parameter configurations that are likely to fail. It achieves this by:

1. Adding a "is_feasible" metric to experiment data based on trial status
       - ABANDONED trials get feasibility value of 0.0 (infeasible)
       - Other trials get feasibility value of 1.0 (feasible)

2. Adding a feasibility constraint to the optimization config
       - The constraint enforces P(is_feasible) >= threshold
       - This guides the acquisition function to avoid infeasible regions


NOTE: We should maybe pick a different word than "feasibility" to not be confused with feasibility in the sense of not violating user-specified outcome constraints.

Differential Revision: D85185246
sunnyshen321 pushed a commit to sunnyshen321/Ax that referenced this pull request Mar 6, 2026
Summary:
Pull Request resolved: facebook#4547

Transform that adds failure-awareness capability to Ax optimization.

This transform enables Ax to learn from deterministic trial failures (ABANDONED trials) and avoid sampling similar parameter configurations that are likely to fail. It achieves this by:

1. Adding a "execution_viable" metric to experiment data based on trial status
       - ABANDONED trials get feasibility value of 0.0 (not viable)
       - Other trials get feasibility value of 1.0 (viable)

2. Adding the execution_viable constraint to the optimization config
       - The constraint enforces P(execution_viable) >= threshold
       - This guides the acquisition function to avoid non-viable regions

Differential Revision: D85185246
@codecov-commenter
Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 96.83258% with 7 lines in your changes missing coverage. Please review.
✅ Project coverage is 96.83%. Comparing base (9f50a93) to head (544c785).

Files with missing lines Patch % Lines
ax/adapter/transforms/add_execution_viability.py 94.44% 5 Missing ⚠️
ax/benchmark/benchmark.py 94.11% 1 Missing ⚠️
ax/service/utils/best_point.py 94.44% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #4547      +/-   ##
==========================================
- Coverage   96.83%   96.83%   -0.01%     
==========================================
  Files         599      601       +2     
  Lines       64584    64800     +216     
==========================================
+ Hits        62540    62748     +208     
- Misses       2044     2052       +8     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

sunnyshen321 pushed a commit to sunnyshen321/Ax that referenced this pull request Mar 11, 2026
Summary:

Transform that adds failure-awareness capability to Ax optimization.

This transform enables Ax to learn from deterministic trial failures (ABANDONED trials) and avoid sampling similar parameter configurations that are likely to fail. It achieves this by:

1. Adding a "execution_viable" metric to experiment data based on trial status
       - ABANDONED trials get feasibility value of 0.0 (not viable)
       - Other trials get feasibility value of 1.0 (viable)

2. Adding the execution_viable constraint to the optimization config
       - The constraint enforces P(execution_viable) >= threshold
       - This guides the acquisition function to avoid non-viable regions

Reviewed By: saitcakmak

Differential Revision: D85185246
Sunny Shen added 2 commits March 12, 2026 10:11
Summary:

Allow custom tolerated_trial_failure_rate for failure aware benchmark problems where Standard BO without failure awareness is expected to have a high trial failure rate

Reviewed By: Balandat

Differential Revision: D87092423
Summary:

Transform that adds failure-awareness capability to Ax optimization.

This transform enables Ax to learn from deterministic trial failures (ABANDONED trials) and avoid sampling similar parameter configurations that are likely to fail. It achieves this by:

1. Adding a "execution_viable" metric to experiment data based on trial status
       - ABANDONED trials get feasibility value of 0.0 (not viable)
       - Other trials get feasibility value of 1.0 (viable)

2. Adding the execution_viable constraint to the optimization config
       - The constraint enforces P(execution_viable) >= threshold
       - This guides the acquisition function to avoid non-viable regions

Reviewed By: saitcakmak

Differential Revision: D85185246
@meta-codesync
Copy link
Copy Markdown

meta-codesync Bot commented Mar 12, 2026

This pull request has been merged in 1e48d0f.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CLA Signed Do not delete this pull request or issue due to inactivity. fb-exported Merged meta-exported

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants